import axios from "axios";
import CookikService from '@/utils/cookie-service';
import router from '@/router';

const ApiService = axios.create({
    baseURL: "/dev-api", // 基础 URL
    timeout: 5000, // 请求超时时间
});

// 配置响应拦截器
ApiService.interceptors.response.use(
    (res) => {
        const code = res.data.code; // 提取接口返回的状态码
        const msg = res.data.msg; // 提取接口返回的消息内容

        if (code === 1000) {
            return Promise.resolve(res.data); // 请求成功，返回数据
        }
        else if (code === 3001) {
            ElMessage.error('登录状态已过期')
            CookikService.removeToken()
            router.push('/oj/login')
            return Promise.reject(new Error(msg)); // 返回失败信息
        }
        else {
            console.error(JSON.stringify(res.data));
            throw new Error(msg);
        }
    },
    (error) => {
        // 处理其他错误
        return Promise.reject(error);
    }
);

// 配置请求拦截器
ApiService.interceptors.request.use(
    (config) => {
        // 如果 token 存在，添加到请求头的 Authorization 字段
        const token = CookikService.getToken();
        if (token) {
            config.headers.Authorization = "Bearer " + token;
        }
        return config; // 返回请求配置
    },
    (error) => {
        console.error("Request Error:", error); // 请求错误时打印错误信息
        return Promise.reject(error); // 返回错误
    }
);

export default ApiService;
